package java_learn.java_jinjie.FunctionalInterface.Predicate;

import java.util.ArrayList;
import java.util.function.Predicate;

/**
 * 练习：集合信息筛选
 * 数组当中有多条“姓名+性别”的信息如下，
 * String[] array = { "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女" };
 * 请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中，
 * 需要同时满足两个条件：
 * 1. 必须为女生；
 * 2. 姓名为4个字。
 * <p>
 * 分析:
 * 1.有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
 * 2.必须同时满足两个条件,所以可以使用and方法连接两个判断条件
 *
 * @Author: 李浩然
 * @Date: 2021/5/11 9:08 下午
 */
public class Test {
    public static ArrayList<String> checkString(String[] s, Predicate<String> pre1, Predicate<String> pre2) {
        ArrayList<String> arrayList = new ArrayList<>();
        for (String str : s) {
            if (pre1.and(pre2).test(str)) {
                arrayList.add(str);
            }
        }
        return arrayList;
    }

    public static void main(String[] args) {
        String[] array = {"迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女"};
        ArrayList<String> arrayList = checkString(array, (a) -> {
            return a.split(",")[1].equals("女");
        }, (a) -> {
            return a.split(",")[0].length() == 4;
        });
        System.out.println(arrayList);
    }
}
